里式替换原则(LSP)
子类对象能够替换父类对象出现的任何地方,并且程序的逻辑性不变以及正确性不被破坏。
里式替换原则与多态之间的关系
晃眼一看,里式替换原则似乎说的就是多态这么一回事,多态可以替换父类出现的任何地方。但是多态和里式替换原则完全是两个事情,他们的区别与联系如下:
相同点
- 子类能够替换父类出现的任何地方(里式替换原则与多态)
不同点
- 子类替换父类对象出现的地方之后,里式替换原则需要保证程序的逻辑不变以及正确性不被破坏。多态则有可能出现正确性被破坏的情况。
- 多态是一种代码实现思路,而里氏替换原则是一种设计原则,用于指导继承关系中子类如何去设计来保证逻辑性不变以及正确性。
哪些设计不满足里式替换原则
- 子类违背父类要实现的功能
子类去覆盖重写父类原有的功能方法。
- 子类违背了父类关于输入、输出、异常的约定。
子类违背了父类的一些约定,导致子类替换的时候修改了以前的功能代码。
- 如何父类的单元测试没法通过子类的单元测试,则说明子类的设计没有符合里式替换原则。